package com.bzkj.inventory.service;

import com.bzkj.common.core.domain.AjaxResult;
import com.bzkj.common.core.page.TableDataInfo;
import com.bzkj.common.core.page.TableDataInfoInvention;
import com.bzkj.inventory.domain.InventoryDiscrepancyDetail;

import java.util.Date;
import java.util.List;

/**
 * @InterfaceName InventoryService
 * @Description TODO 库存盘点功能接口
 * @Author C1309
 * @Date 2025/5/12 10:02
 */
public interface InventoryService {

    /**
     * 自动核对WMS与NCC现存量
     */
    void synTheOnHandQuantityJob();

    /**
     * 按仓库进行盘点
     *
     * @param warehouseId 仓库主键
     * @return 盘点结果
     */
    TableDataInfoInvention getInventoryList(String warehouseId, int pageSize, int pageNum);

    /**
     * 保存盘点结果
     *
     * @param warehouseId 仓库ID
     * @return 操作结果
     */
    int saveInventoryData(String warehouseId);

    /**
     * 手动同步WMS与NCC现存量
     *
     * @param warehouseId 仓库ID
     * @return 消息提示
     */
    AjaxResult manualSyncingTheOnHandQuantity(String[] warehouseId);

    /**
     * 获取库存盘点调度日志
     *
     * @param warehouseId 仓库ID
     * @param startDate   开始时间
     * @param endDate     结束时间
     * @param isResolved  是否已解决
     * @return 库存盘点调度日志
     */
    TableDataInfo abnormalInventory(String warehouseId, Date startDate, Date endDate, String isResolved, int pageNum, int pageSize);

    /**
     * 获取库存盘点异常信息
     *
     * @param taskId 任务ID
     * @return 库存异常盘点信息
     */
    List<InventoryDiscrepancyDetail> getInventoryDiscrepancyDetail(Long taskId);

    /**
     * 更新库存盘点任务ID
     *
     * @param taskId 任务ID
     * @return 更新结果
     */
    int updateTaskId(Long taskId);

    /**
     * 获取库存盘点异常信息（导出用）
     *
     * @param ids 任务id
     * @return 库存盘点异常信息
     */
    List<InventoryDiscrepancyDetail> inventoryDiscrepancyDetailList(Long[] ids);

    /**
     * 查询当前用户是否存在库存盘点异常信息
     *
     * @return 结果
     */
    int selectIsResolved();
}
